Reactor version 3

- made case no longer relevant in page name.

- dropped 10.2 support (for WebScripingObject support)

FeedReactor now supports 3 formats:
	a) FeedReactor( Pagename ; content )	backwards compatibility 
	b) FeedReactor( container )				loads a reactor BlackBox from a container field
	c) FeedReactor( blackboxURL )			downloads and installs a BlackBox from the provided black box URL


ReactorVersion. 
Supported Calls:

	a) ReactorVersion()						The version string, including the licensee details if any
	b) ReactorVersion( "VID" )				A unique number increasing with each release.
	c) ReactorVersion( "License" )			An url link to a HTML License page
	d) ReactorVersion( "Function" ; functionName )		The version function  passed as the parameter
	e) ReactorVersion( "BlackBox" ; blackboxName )		The version of the blackbox passed as the parameter
	f) ReactorVersion( "WebBlackBox" ; url )		The version of the blackbox passed as the parameter
	g) ReactorVersion( "RegistrationCodes" )		Shows all the Registraion codes used to register the Reactor in this run. 
	

ReactorContent function:
Supported Calls:

	a) ReactorContent( "" )					displays all the the pages in the Reactor
	b) ReactorContent( "LoadedFunctions" )	returns the loaded functions
	c) ReactorContent( "LoadedBlackBoxes" )	returns the loaded blackboxes


RegisterReactor:
	Will now not reset the registration if sent a blank string
	
StartReactor
	Calls the RegisterReactor() function if its passed Registration codes instead of processing its self.
	
Relationship( TargetTO )
RelationshipKeyBuilder( TargetTO )	
	
Reactor_EscapeJavascript( text )
	Escapes characters in text so they can be used in Javascript. Characters are: \n,\r,\t,',"
	
what other functions do we need

RunJavascript( webviewerObjectID ; javascript )
Runs the javascript function (or the code in the parameter) in the webviewer with the objectID.
Must be called from the layout where the webviewer resides, as the function gets the URL loaded in the web viewer and compares it with the URLs of the webviewers as it iterates through them.
Returns a value on Mac


MetaEdit( Metafile )
MetaSave( )
MetaClear( )
MetaSetValue( value ; dictionarypath ... )
MetaGetValue( dictionarypath... )
MetaImportFiles( )
MetaDeleteValue( dictionarypath... )

These functions are used by the Blackbox editor to query and edit the meta.xml file. These are hidden and only accessed through the editor.


LoadImages( \"imageFieldName\" ; \"recIDFieldName\" ; prefixfilePath )

loads a series of images and returns HTML with the images as links. Used by the image flow.

Blackboxes
Blackboxes are encrypted but not compressed.



.rct files

Reactor tags <?Reactor and /Reactor?> delimit a filemaker calculation. These tokens as reserved words inside the rct files and may not be used unless they wrap a FileMaker calculation.
Reactor takes the calculation end evaluates it, and puts the result where the tags were inside the file.
eg
<?Reactor right ( $startFieldName ; length($startFieldName) - position($startFieldName;"::";1;1)-1) /Reactor?>


You can use Let statements to set FileMaker script variables to be used later in the rct file. 
<?Reactor let ($TOName = left($startFieldName ; position($startFieldName;"::";1;1)-1);$TOName) /Reactor?>

$TOName may be used in other calculations in the rct file.

Black Box function parameters.
At the start of parsing, FileMaker script variables are created for every function parameter. The names of these parameters/variables are setup in the blackbox editor. These variables may be used in FileMaker calculations within the rct file. You may change the value of the parameter in  calculation.

The rct files are parsed in one pass, from top to bottom.

$RC_Load_FilePath variable set to load file path.

FileMaker calculation errors will set the $com.reactorize.env.lasterror variable, and set the replaced text to "Error"

parsing errors will return an error page with the character near where the error occurred


Calculation Recursion
the recursion limt appears to be 165 compared to FileMakers 10000


XML requests (Still in development)
content type for the request must be "text/xml"
Format not totally finalised, the sql attributes may become elements

<?xml version="1.0" encoding="UTF-8"?>
<reactor> 
   <fmscript>
	  <databasename></databasename> 
	  <scriptname></scriptname> 
	  <scriptparameter></scriptparameter>
   </fmscript>
   <fmsql>
		<sql db=XYZ lay=ABC>SELECT * FROM my_table</sql>
   </fmsql>
   <fmcalculation>
		<calc></calc>
   </fmcalculation>
</reactor>

XML reply

<?xml version="1.0" encoding="UTF-8"?>
<reactor> 
   <fmsqlresult>
	  <record>
		<field1><\field1>
		<field2><\field2>
		<field3><\field3>
	  </record> 
   </fmsqlresult>
   <fmscriptresult>
		<err>102</err>
   </fmscriptresult>
   <fmcalculationresult>
		<result>XYZ</result>
   </fmcalculationresult>
</reactor>















	   
